package com.evildog.workspace.system.application.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.evildog.workspace.common.object.PageQuery;
import com.evildog.workspace.common.result.PagedResult;
import com.evildog.workspace.dependencies.mybatis.object.BaseStatusDTO;
import com.evildog.workspace.dependencies.mybatis.object.LinkIdDTO;
import com.evildog.workspace.dependencies.mybatis.object.QueryConditionDTO;
import com.evildog.workspace.system.application.bo.UserGroupBO;
import com.evildog.workspace.system.application.bo.UserGroupListBO;
import com.evildog.workspace.system.application.bo.UserGroupPageBO;
import com.evildog.workspace.system.application.dto.UserGroupDTO;
import com.evildog.workspace.system.application.dto.UserGroupListDTO;
import com.evildog.workspace.system.application.dto.UserGroupPageDTO;
import com.evildog.workspace.system.application.entity.UserGroup;

import java.util.List;

/**
 * <p>
 * userGroup Service
 * </p>
 *
 * @author evildog
 * @since 2020-07-25
 */
public interface UserGroupService extends IService<UserGroup> {

    /**
    * 自定义分页
    */
    PagedResult<UserGroupPageBO> getPageList(PageQuery query, List<QueryConditionDTO> queryConditions, UserGroupPageDTO pageDTO);

    /**
    * 获取List
    */
    List<UserGroupListBO> getList(List<QueryConditionDTO> queryCondition, UserGroupListDTO dto);

    /**
    * 获取详情
    */
    UserGroupBO getDetailById(Long id);

    /**
    * 获取详情
    */
    boolean updateById(Long id, UserGroupDTO param);

    /**
    * 获取详情
    */
    boolean save(UserGroupDTO param);

    boolean remove(Long id);

    boolean updateRoles(Long id, LinkIdDTO dto);

    boolean updateStatus(Long id, BaseStatusDTO dto);

    List<UserGroupListBO> getList(Long userId);
}
